iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 18
0

https://ithelp.ithome.com.tw/upload/images/20181102/20110801IkSo2e6eUz.png

建構與解構

當我們在 Swift 中建例一個物件時,會呼叫一個特別的建構函式,建構函式是一個方法,用來設定物件初始狀態用的,而函式名稱為 init

Swift 有兩種初始化建構器:便利建構器 ( convenience initializer ) 與自定建構器 ( designated initializer ),自定建構器用來進行所有我們必須做的事情,使物件達到可以使用的狀態,這些事通常都採用各種設定,而便利建構器,是藉由初始化過程中,由於更多資訊的加入,將實例的準備工作便得更便利,便利建構器中必須呼叫自定建構器。

除了建構器之外,我們阿也可以在解構器 ( deinitializer ) 方法中,加入移除物件時想執行得程式碼。這個方法名為 ** deinit**,解構函數在物件引用計數為 0 時執行,從記憶體中移除物件之前呼叫,是物件被永久移除前最後動作的機會:

https://ithelp.ithome.com.tw/upload/images/20181102/20110801m7kNyetit9.png

當建構器無法建構物件時,建構器可以回傳 nil。舉例來說,假設有一個 URL 類別,他的建構器能接收字串參數,並將該字串轉為URL;如果傳入的字串不是合法的URL,那麼建構函數就要回傳 nil,我們剛剛在將一個形態轉為另一個形態時,就使用過了:

let three = Int("3")
//3

若想鍵例一個能回傳nil的建構器,也就是可失敗建構器 ( failable initializer ),將問號放在 init 後面,並在無法建構物件的情況 return nil:

https://ithelp.ithome.com.tw/upload/images/20181102/20110801saF67Nhxnv.png

在使用可失敗建構器,無論建構是否成功,他回傳都是 optional 變數:

https://ithelp.ithome.com.tw/upload/images/20181102/20110801ftNBoXldNS.png


上一篇
Swift 4.2 Day-17 inherit 繼承
下一篇
Swift 4.2 Day-19 Generics 泛型
系列文
菜比八iOS程式開發30天自我挑戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言